The present invention generally relates to automatically installing files required by other application programs. More particularly, the present invention relates to determining which files are required to execute a program module and installing any missing or newer versions of required files without invoking a separate manual installation procedure.
Before an application program is used, it must typically be installed onto a computer system. The installation procedure generally involves copying executable and data files, including files such as shared library files that are necessary during the application""s execution, from a source location to an installed location on the computer system. Typically, the source location is an installation disk or a location on a network drive accessible by the computer system. Often the data files are stored in a compressed format to conserve storage space.
This installation procedure is costly for the user and the software developer/manufacturer who supports the application being installed. It is costly to users to perform in that it takes time and, in many cases, more understanding of the product and installation process than the user initially possesses. It is costly to the software developer/manufacturer because the installation procedure has historically caused confusion for users, resulting in a tremendous volume of calls to the software developer/manufacturer""s product support center. Installation is typically the single highest call generator in the first months after a product is released to the general public.
Another problem regarding the installation procedure is that it may have to be performed several times for one individual application. Often, the over-zealous user, in an attempt to minimize disk space usage on the computer system, may delete a data file with which the user is unfamiliar. Likewise, the over-zealous user may attempt to rearrange the file structure of the computer system by moving the data files after installation. When this occurs, the application""s data files need to be reinstalled forcing the user to go through another installation procedure.
Similarly, data files required by an application may get deleted not by the over-zealous user, but inadvertently by another application or computer process. In addition, the computer""s file structure may get inadvertently degraded by a faulty application or faulty hardware. When these situations occur as well, the user is required to reinstall the application""s data files in order to execute the application.
Today, application programs use a variety of installation technologies to copy the necessary files from the source location to the computer system. Most often, an application program will include an installation application program for administering and performing the installation procedure. This installation is necessary because many applications required data files to be in known and unchanging locations, paths to which are stored in a registration database and preference files. Getting the files to these locations is a functions of an installation application program, and therefore require a user to utilize the installation application program every time one of the data files is deleted or lost in order to enable a fully working application.
Thus, existing installation technologies fail to support the ability to install required application data files without the user executing an installation application program. Furthermore, existing installation technologies fail to support the user by requiring the user to have some knowledge about the installation of the application in order to properly install the application""s data files. Accordingly, there is a need in the art for a method to determine when an application""s data files need to be installed and to install these data files automatically and without the requiring user to invoke a separate installation application program.
The present invention meets the above-described need by providing the ability to detect when a file required by the application is missing and to install the missing file in the proper location without requiring the user to invoke any installation procedure. The present invention achieves this result by, after the launch of the application, checking the computer system for the required files that are necessary for the application""s execution. In the event that any of the required files are missing from the computer system, the present invention then automatically installs the application""s required files and executes the application all without requiring the user to proceed with an installation or prompting them for installation parameter values.
In one embodiment of the present invention, the missing required files are installed by first storing the location of the application being launched at a temporary location in the computer system. An installer module is then launched and the application program is terminated. This action is performed without prompting the user to initiate any installation. A prompt may be given to the user indicating that the installation process is occurring, but no information is required from the user. After terminating the application, and where a second required file is in use, the computer system is checked to determine whether it has sufficient resources in order to execute the application and to accept a copy of the missing required file.
If there are sufficient system resources, the installer program installs the missing required file to the location expected by the application. After the missing required file is installed, then the computer system must be restarted, particularly in those instances where the second required file is a shared file used by multiple applications.
In the event that the second required file is not in use, then again, the present invention checks whether there are sufficient system resources. If sufficient computer resources exist, then the missing file is installed, by the installer, to the location in the computer system where it is accessible by a shared library Dynamic Link Library (DLL). The location of the application that launched the installer is then retrieved from the file where it was stored prior to its termination. Using the application""s address information, the installer module then launches the application.
In one embodiment of the present invention, the file required by the application is stored in a compressed format in the installer module. In another embodiment of the present invention, not only is the missing required file replaced by the installer module, but the installer program checks required files that are still located on the computer system and replaces those required files that are an older version than the required files contained in the installer module.
The advantage of the present invention is that data files required by the application are installed, where they are accessible to the application (through the shared library DLL), but without requiring the user to perform any installation procedure. This allows the user to: (1) launch an uninstalled application that is contained in the shipping medium, such as a compact disc (xe2x80x9cCDxe2x80x9d), without the user providing any installation parameters to the system, and end up with an application that is fully enabled; and (2) launch a previously installed application, where one of the required files have become missing or deleted, again without requiring the user to provide any information, and end up with a application that is fully enabled.